In the field of computer software, security is important. Well known technical measures for protecting the security of software and computer data include what is referred to in the field as “software obfuscation” which protects software from unauthorized use or access by making the software code more obscure than it is in its original form, thus making it harder for a potential attacker to understand it or access it or its contents during execution. In general obfuscation is intended to make it more time consuming to reverse engineer a program, typically to protect the program against hackers or attackers who wish to determine what the software is doing or to alter it or gain unauthorized access. One aspect of software is handling of data and hence obfuscating the data is also important.
It is known to obfuscate arrays of data which are being manipulated by computer software, see “Obfuscate Arrays by Homomorphic Functions” by William Zhu et al., IEEE, 2006, which discloses several methods of software obfuscation using data transformation for stored arrays. The data transformations described there include array index changes, array folding and array flattening. Array index changing involves changing the data array index. Array folding and flattening include change the dimension of an array in the software code.
New methods of obfuscation are of great interest in the software field and especially methods of obfuscating or protecting data which is being processed in a non-secure environment such as a consumer electronics device or personal computer. This especially occurs in the context of content protection software, which protects digital content such as audio and video material from misuse. Typically at least a portion of this software is executed in a client device such as a mobile telephone, laptop computer, video player, etc. where the device itself is accessible to hackers, as are some of its internal operations.